package com.bto.solar.work.utils;

import java.util.Arrays;
import java.util.Collection;
import java.util.Map;

/**
 * @author 王小波
 * @description:
 * @date 2023/4/27 17:44
 */
public class NullUtils {



    /**
     * 判断对象是否为空
     *
     * @param object 对象
     * @return 是否为空
     */
    public static boolean isNull(Object object) {
        return object == null;
    }


    public static boolean isAnyNull(Object... objects) {
        return Arrays.stream(objects).anyMatch(NullUtils::isNull);
    }


    /**
     * 判断对象是否不为空
     *
     * @param object 对象
     * @return 是否不为空
     */
    public static boolean isNotNull(Object object) {
        return object != null;
    }

    /**
     * 判断字符串是否为空或长度为0
     *
     * @param str 字符串
     * @return 是否为空或长度为0
     */
    public static boolean isEmpty(String str) {
        return str == null || str.length() == 0;
    }

    /**
     * 判断字符串是否不为空且长度大于0
     *
     * @param str 字符串
     * @return 是否不为空且长度大于0
     */
    public static boolean isNotEmpty(String str) {
        return !isEmpty(str);
    }

    /**
     * 判断集合是否为空
     *
     * @param collection 集合
     * @return 是否为空
     */
    public static boolean isEmpty(Collection<?> collection) {
        return collection == null || collection.isEmpty();
    }

    /**
     * 判断集合是否不为空
     *
     * @param collection 集合
     * @return 是否不为空
     */
    public static boolean isNotEmpty(Collection<?> collection) {
        return !isEmpty(collection);
    }

    /**
     * 判断Map是否为空
     *
     * @param map Map
     * @return 是否为空
     */
    public static boolean isEmpty(Map<?, ?> map) {
        return map == null || map.isEmpty();
    }

    /**
     * 判断Map是否不为空
     *
     * @param map Map
     * @return 是否不为空
     */
    public static boolean isNotEmpty(Map<?, ?> map) {
        return !isEmpty(map);
    }

    /**
     * 判断数组是否为空
     *
     * @param array 数组
     * @return 是否为空
     */
    public static boolean isEmpty(Object[] array) {
        return array == null || array.length == 0;
    }

    /**
     * 判断数组是否不为空
     *
     * @param array 数组
     * @return 是否不为空
     */
    public static boolean isNotEmpty(Object[] array) {
        return !isEmpty(array);
    }

}
